/**
 * http 请求体body转Map对象，方便从map检索值
 */
package ms.core.common;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import lombok.Data;
import ms.core.tool.JsonTool;

@Data
public class RequestBody extends HashMap<String, Object> {
	private static final long serialVersionUID = -3115107558245426672L;

	/**
	 * body转map对象
	 * 
	 * @param body
	 * @return
	 */
	public static RequestBody getInstance(Object body) {
		Map<String, Object> map = JsonTool.objectToMap(body, false);

		RequestBody rb = new RequestBody();
		if (map!=null) rb.putAll(map);

		return rb;
	}
	
	/**
	 * 按class类名称过滤无效的项
	 * 
	 * @param body
	 * @param cls
	 * @return
	 */
	public static RequestBody getInstance(Object body, Class<?> cls) {
		Object obj = JsonTool.objectToBean(body, cls);
		return getInstance(obj);
	}
	
	public Object getValue(String key) {
		return JsonTool.getValue(this,key);
	}
	
	public String getStrValue(String key, String defaultValue) {
		return JsonTool.getStrValue(this, key, defaultValue);
	}

	public int getIntValue(String key, int defaultValue) {
		return JsonTool.getIntValue(this, key, defaultValue);
	}

	public long getLongValue(String key, long defaultValue) {
		return JsonTool.getLongValue(this, key, defaultValue);
	}

	public float getFloatValue(String key, float defaultValue) {
		return JsonTool.getFloatValue(this, key, defaultValue);
	}

	public double getDoubleValue(String key, double defaultValue) {
		return JsonTool.getDoubleValue(this, key, defaultValue);
	}

	public Date getDateValue(String key, Date defaultValue) {
		return JsonTool.getDateValue(this, key, defaultValue);
	}

	public Date getDateTimeValue(String key, Date defaultValue) {
		return JsonTool.getDatetimeValue(this, key, defaultValue);
	}
}
